iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
自我挑戰組

線上商店串接tappay系列 第 29

Node.js EJS

  • 分享至 

  • xImage
  •  

Node.js的EJS(Embedded JavaScript),幫助我們在HTML中嵌入javascript,可以將動態的資料放進HTML再回傳給client。

首先安裝EJSnpm install ejs

寫好ejs的網頁,可以只寫入HTML,但檔名需為ejs

試著結合expressc和ejsx來從server端做rendering事先寫好的網頁。

app.get('/', (req, res) => {
  res.render('index', { title: 'Home' });
});

app.get('/about', (req, res) => {
  res.render('about', { title: 'About' });
});

app.get('/blogs/create', (req, res) => {
  res.render('create', { title: 'Create a new blog' });
});

// 404 page
app.use((req, res) => {
  res.status(404).render('404', { title: '404' });
});

{ title: 'Home'}是我們從這個app.js傳遞給ejs的數據,所以只要更改這裡的title,

在Index.ejs寫上<%= title %>的地方,就會重新render上不同的字。


我們也可以在app.js的地方,讓整個blog資料當成ejs的參數,

app.get('/', (req, res) => {
  const blogs = [
    {title: 'Yoshi finds eggs', snippet: 'Lorem ipsum dolor sit amet consectetur'},
    {title: 'Mario finds stars', snippet: 'Lorem ipsum dolor sit amet consectetur'},
    {title: 'How to defeat bowser', snippet: 'Lorem ipsum dolor sit amet consectetur'},
  ];
  res.render('index', { title: 'Home', blogs });
});

這樣我們就能在index.ejs利用這個參數,例如這裡要display所有的blogs
,可以發現有使用ejs的條件句,都要用ejs標籤包起來。

   <% if (blogs.length > 0) { %>
      <% blogs.forEach(blog => { %>

        <h3 class="title"><%= blog.title %></h3>
        <p class="snippet"><%= blog.snippet %></p>

      <% }) %>
    <% } else { %>
      <p>There are no blogs to display...</p>
    <% } %>
    

參考資料

Net ninja


上一篇
Node.js express
下一篇
Node.js middleware
系列文
線上商店串接tappay30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言